/**
 * 区间随机数
 * @param {number} max
 * @param {number} min
 */
export const getRandomNumber = (max: number, min: number) => {
	return Math.floor(Math.random() * (max - min + 1) + min)
}

/**
 * 计算数组中某个值出现的次数
 * @param {number[]} arr
 * @param {number} val
 */
export const calcNumbers = (arr: number[], val: number) => {
	return arr.reduce((prev, cur) => {
		return cur === val ? prev + 1 : prev
	}, 0)
}

/**
 * 计算数组中最大的数字
 * @param {number[]} arr
 */
export const calcMaxNumber = (arr: number[]) => {
	return arr.reduce((prev, cur) => Math.max(prev, cur), 0)
}

/**
 * 随机颜色
 * @returns
 */
export const rendomColor = () => {
	return `#${Math.floor(Math.random() * 16777215).toString(16)}`
}

/**
 * 手机号加密
 * @example 17611000011 => 176****0011
 * @param {number} mobile
 */
export const formateMobile = (mobile: number) => {
	if (!mobile) return '-'
	const phone = mobile.toString()
	return phone.replace(/(\d{3})\d*(\d{4})/, '$1****$2')
}

/**
 * 手机号加密
 * @param {string | number} tel
 */
export const formatePhone = (tel) => {
	if (typeof tel === 'number') tel = tel.toString()
	if (tel.length > 13) return tel
	// 前三位 + 后四位 + (11-3=8) 填充4个*
	return tel.slice(0, 3) + tel.slice(-4).padStart(tel.length - 3, '*')
}

/**
 * 格式化金额
 * @param {number | string} num
 * @returns
 */
export const formatMoney = (num: number | string) => {
	if (!num) return '0.00'
	const newNum = parseFloat(num.toString())
	return newNum.toLocaleString(
		'zh-CN', // 指定地区语言
		{
			style: 'currency', // 货币格式
			currency: 'CNY' // 货币符号
		}
	)
}

/**
 * 格式化千分位数字
 * @param {number | string} num
 * @returns
 */

export const formatNum = (num) => {
	if (!num) return 0
	const a = num.toString()
	if (a.indexOf('.') > -1) return a.replace(/(\d)(?=(\d{3})+\.)/g, '$1,') // 小数
	return a.replace(/(\d)(?=(\d{3})+$)/g, '$1,')
}
